// 请求后端接口的工具
import axios from "axios";
// 配置信息对象
import config from "../config/Config.js";
// 封装自己的API
const http={
    /**
     * 给用户重新设置权限
     * @param {*} userId 
     * @param {*} permissionIds 
     * @param {*} callBack 
     */
    settingPermission(userId,permissionIds,callBack){
        let url = config.BASE_URL + "/user/settingPermission?userId=" + userId;
        for(let x = 0;x < permissionIds.length;x ++){
            url += "&permissionId=" + permissionIds[x];
        }
        axios.get(url).then(res=> callBack(res.data) );
    },

    /**
     * 批量添加用户角色关系
     * @param {*} userId  用户编号
     * @param {*} roleIds 角色编号，数组
     * @param {*} callBack  回调函数
     */
    addRoleUserRelations(userId,roleIds,callBack){
        let url = config.BASE_URL + "/user/addUserRoleRelations?userId=" + userId;
        for(let x = 0;x < roleIds.length;x ++){
            url += "&roleId=" + roleIds[x];
        }
        axios.get(url).then(res=> callBack(res.data) );
    },
    /**
     * 添加用户角色关系
     * @param {*} userId 
     * @param {*} roleId 
     * @param {*} callBack 
     */
    addRoleUserRelation(userId,roleId,callBack){
        axios.get(config.BASE_URL + "/user/addRoleUserRelation?userId="+userId+"&roleId="+roleId).
        then(res=> callBack(res.data));
    },

    /**
     * 删除用户角色关系
     * @param {*} userId 
     * @param {*} roleId 
     * @param {*} callBack 
     */
    deleteRoleUserRelation(userId,roleId,callBack){
        axios.get(config.BASE_URL + "/user/deleteRoleUserRelation?userId="+userId+"&roleId="+roleId).
        then(res=> callBack(res.data));
    },
    /**
     * 给用户分配角色的API
     * @param {*} userId 用户编号
     * @param {*} roleIds 角色编号数组
     * @param {*} callBack 
     */
    settingRole(userId,roleIds,callBack){
        // 拼接url
        let url = config.BASE_URL + "/user/settingRole?userId=" + userId;
        for(let x = 0;x < roleIds.length;x ++){
            url += "&roleId=" + roleIds[x];
        }
        // 发送请求
        axios.get(url).then(res=> callBack(res.data));
    },
    /**
     * 根据用户id查询这个用已经拥有的角色列表
     * @param {*} userId 
     * @param {*} callBack 
     */
    queryRoleByUserId(userId,callBack){
        axios.get(config.BASE_URL + "/role/queryByUserId?userId="+userId).then(res=> callBack(res.data));
    },
    /**
     * 根据用户的id查询尚未分配的角色列表
     * @param {*} userId 
     * @param {*} page 
     * @param {*} limit 
     * @param {*} role 
     * @param {*} callBack 
     */
    queryNoAllocationByUserId(userId,page=1,limit=1,role,callBack){
        // 拼接url
        let url = config.BASE_URL + "/role/queryNoAllocationByUserId?userId="+userId+"&page="+page+"&limit="+limit;
        if(role != undefined && role.roleName != undefined && role.roleName != ''){
            url += "&roleName="+role.roleName;
        }
        axios.get(url).then(res=> callBack(res.data));
    },
    /**
     * 编辑用户
     * @param {*} user 要保存的用户的JS对象
     * @param {*} callBack  保存完成之后的回调函数
     */
    editUser(user,callBack) {
        // 这里可以做一些校验......
        // 发送请求保存用户
        axios.post(config.BASE_URL + "/user/edit",user).then((res)=>{
            // 获取我们的自己后端响应的数据对象
            let data = res.data; //qdResult
            // 调用回调函数，将data传入回调函数
            callBack(data);
        }).catch((res)=>{
            console.log(res);
        });
    },
    /**
     * 通过id查询用户信息
     * @param {*} id 
     * @param {*} callBack 
     */
    get(id,callBack){
        axios.get(config.BASE_URL + "/user/get?id="+id).then(res=> callBack(res.data));
    },
    /**
     * 保存用户
     * @param {*} user 要保存的用户的JS对象
     * @param {*} callBack  保存完成之后的回调函数
     */
    saveUser(user,callBack) {
        // 这里可以做一些校验......
        // 发送请求保存用户
        axios.post(config.BASE_URL + "/user/save",user).then((res)=>{
            // 获取我们的自己后端响应的数据对象
            let data = res.data; //qdResult
            // 调用回调函数，将data传入回调函数
            callBack(data);
        }).catch((res)=>{
            console.log(res);
        });
    },
    /**
     *  分页查询用户列表
     * @param {*} page 页码
     * @param {*} limit 每页大小
     * @param {*} user 查询条件
     * @param {*} callBack 查询结束之后的回调函数
     */
    list(page = 1,limit = 10,user,callBack){
        // 拼接url
        let url = config.BASE_URL + "/user/queryByPage?page="+page+"&limit="+limit;
        if(user != undefined){
            if(user.username != undefined && user.username != ''){
                url += "&username="+user.username;
            }
            if(user.status != undefined && user.status != 0){
                url += "&status="+user.status;
            }
        }
        // 发送请求
        axios.get(url).then((res)=>{
            callBack(res.data);
        })
    }
}

// 暴漏http对象
export default http;